אוניברסיטת בן-גוריון מדור בחינות רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. שימו לב: על תשובות ריקות יינתן 20% מהניקוד! בהצלחה!

Size: px
Start display at page:

Download "אוניברסיטת בן-גוריון מדור בחינות רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. שימו לב: על תשובות ריקות יינתן 20% מהניקוד! בהצלחה!"

Transcription

1 אוניברסיטת בן-גוריון מדור בחינות מספר נבחן: רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. שימו לב: על תשובות ריקות יינתן 20% מהניקוד! בהצלחה! תאריך הבחינה: שם המורה: ד"ר אנדרי שרף ד"ר רן אטינגר ד"ר ג'ון מרברג ד"ר מני אדלר שם הקורס: תכנות מערכות מספר הקורס: מיועד לתלמידי: מדעי המחשב, הנדסת תוכנה שנה: תשע"ה סמסטר: א' מועד: א' משך הבחינה: שלש שעות חומר עזר: אסור 30( שאלה 1 נקודות( גלגלי שיניים הינם רכיבים אלמנטריים בכל מכונה מודרנית. ראשיתם במכונות שהמציא ארכימדס, אי שם במאה השלישית לפני הספירה. בצמד גלגלי שיניים, כאשר גלגל אחד מסתובב לכיוון מסוים, הגלגל השני מסתובב בכיוון ההפוך. מערכת גלגלי שיניים, הנקראת גם תמסורת, כוללת פעמים רבות גלגלי שיניים בגדלים שונים. בשאלה זו נעסוק בסימולציה פשוטה של מערכת גלגלי שיניים. הממשק Gear מגדיר גלגל שיניים ע"פ נקודות המרכז שלו )קואורדינטות,)x,y אורך הרדיוס, ושני גלגלי השיניים שמצידו הימני והשמאלי )לפי הקואורדינטה x, כאשר קואורדינטת y אינה בהכרח זהה(. כמו כן מגדיר הממשק את המתודה,move המסובבת את הגלגל בכיוון הנתון )עם או נגד כיוון השעון(, ואת הגלגלים משני צדדיו בכיוון ההפוך. interface Gear { float getx(); // returns the x coordinate of the center float gety(); // returns the y coordinate of the center float getradius(); // returns the length of the radius Gear getleft(); // returns the gear on the left Gear getright(); // returns the gear on the right void move(boolean clockwise); // advance the gear and both its neighbors void moveleft(boolean clockwise); // advance the gear and its left neighbor void moveright(boolean clockwise); // advance the gear and its right neighbor א. הגדירו תכונה נשמרת )invariant( עבור הממשק להלן מימוש של הממשק )5 נקודות( Gear 1

2 class SimpleGear implements Gear { final float _x,_y,_radius; Gear _left, _right; SimpleGear(float x, float y, float radius) throws Exception { if (!check(x,y,radius)) throw new Exception("Wrong parameter values!"); _x = x; _y = y; _radius = radius; _left = null; _right = null; public float getx() { return _x; public float gety() { return _y; public float getradius() { return _radius; public Gear getleft() { return _left; public Gear getright() { return _right; public void setleft(gear left) throws Exception { if (_left!= null) throw new Exception("Left gear is already defined"); if (!check(left. true)) throw new Exception("Wrong gear position!"); _left = left; public void setright(gear right) throws Exception { if (_right!= null) throw new Exception("Right gear is already defined"); if (!check(right,false)) throw new Exception("Wrong gear position!"); _right = right; public void move(boolean clockwise) { if (_left!= null) getleft().moveleft(!clockwise); if (_right!= null) getright().moveright(!clockwise); public void moveleft(boolean clockwise) { if (_left!= null) getleft().moveleft(!clockwise); public void moveright(boolean clockwise) { if (_right!= null) getright().moveright(!clockwise); 2

3 protected boolean check(float x, float y, float radius) { //@TODO protected boolean check(gear other, Boolean whichside) { //whichside indicates left-side (true) or right-side (false) //@TODO check ב. ג. השלימו את שתי המתודות בסעיף א )2 נקודות( הבודקות את תקינות פרמטרי האתחול, ע"פ התכונה הנשמרת שציינתם בהנחה שמימוש המתודות check נכון, האם המחלקה בטוחה תחת כל חישוב מקבילי אפשרי? אם לא, הראו תרחיש מתאים. אם כן, נמקו בקצרה )4 נקודות( למחלקה SimpleGear נוסף כעת שדה חדש _state המאפיין את מצב גלגל השיניים על ידי מספר ממשי המציין את הזווית שלו )כך שהערך הוא בין 0 ל 360(. המצב ההתחלתי הוא 0. תזוזה בכיוון או נגד כיוון השעון מעלה או מורידה את הערך בהתאם, כפי שנוסף למתודות moveright,moveleft,move ]גודל התזוזה של גלגל השיניים תלוי ברדיוס שלו, כפי שמחושב ע"י המתודה הסטטית getoffset אופן מימושה אינו רלבנטי כאן[ class SimpleGear implements Gear { final float _x,_y,_radius; Gear _left, _right; float _state; SimpleGear(float x, float y, float radius) throws Exception { if (!check(x,y,radius)) throw new Exception("Wrong parameter values!"); _x = x; _y = y; _radius = radius; _left = null; _right = null; _state = 0; public void move(boolean clockwise) { float offset = getoffset(_radius); if (clockwise) _state = (_state + offset) % 360; else _state = (_state - offset) % 360; if (_left!= null) getleft().moveleft(!clockwise); if (_right!= null) getright().moveright(!clockwise); 3

4 public void moveleft(boolean clockwise) { float offset = getoffset(_radius); if (clockwise) _state = (_state + offset) % 360; else _state = (_state - offset) % 360; if (_left!= null) getleft().moveleft(!clockwise); public void moveright(boolean clockwise) { float offset = getoffset(_radius); if (clockwise) _state = (_state + offset) % 360; else _state = (_state - offset) % 360; if (_right!= null) getright().moveright(!clockwise); protected static float getoffset(float radius) { // calculates the offset of a gear with a given radius // the implementation is not relevant for the question ד. עדכנו את התכונה הנשמרת. האם כעת המחלקה בטוחה תחת כל חישוב מקבילי אפשרי? אם לא, הראו תרחיש מתאים. אם כן, נמקו בקצרה )5 נקודות( )4 נקודות( move ה. הגדירו תנאי התחלה וסיום למתודה נתונה מערכת המסמלצת מנגנון פשוט של גלגלי שיניים: class Spinner implements Runnable { Gear _gear; boolean _clockwise; Spinner(Gear gear, boolean clockwise) { _gear = gear; _clockwise = clockwise; 4

5 public void run() { for (int i=0;i<10; i++) { _gear.move(_clockwise); Thread.sleep(1000); catch (InterruptedException e) { class Simulation { public static void main(string[] args) throws Exception { SimpleGear gear1 = new SimpleGear(10,10,5); SimpleGear gear2 = new SimpleGear(20,10,5); SimpleGear gear3 = new SimpleGear(30,10,5); gear2.setleft(gear1); gear2.setright(gear3); gear1.setright(gear2); gear3.setleft(gear2); new Thread(new Spinner(gear2,true)).start(); new Thread(new Spinner(gear2,false)).start(); ו. האם הרצת המערכת נכונה? )בבדיקת קריטריון הנכונות, כהתאמת סדרת המצבים האפשרית עבור הרצה בסדר כל שהוא של פעולות, התייחסו להפעלת המתודה move כפעולה(. במידה ולא, תקנו את הקוד כך שיבטיח נכונות. )10 נקודות(. 30( שאלה 2 נקודות( וקטור )vector( הינו מבנה אחסון אשר מחזיק מערך )array( באופן סדרתי בזיכרון. התכונה המיוחדת של וקטור היא שניתן להגדיל ולהקטין אותו )resize( באופן דינאמי על פי הצורך. לאחר שהתברר כי המחלקה std::vector בזבזנית ביחס להקצאות זיכרון, הוחלט לממש מחלקה חדשה בשם mvector באמצעות רשימה מקושרת, הדואגת שהזיכרון הנצרך על ידי הווקטור הוא בדיוק בגודל הנדרש על מנת לאחסן את הנתונים. א. ממשו את פונקציות המחלקה.mvector ניתן להוסיף פונקציות עזר אך אין להוסיף שדות או לשנות חתימות של פונקציות קיימות. הגישה לאיבר ברשימה מקושרת אינה ב- (1)O כפי שבמערך. הפונקציה insertat מכניסה איבר במיקום,pos תמיד מצליחה, ומקצה זיכרון אם נדרש. הפונקציה removeat מוציאה איבר במיקום,pos ומקטינה את המבנה בהתאם. במידה ואין איבר במיקום זה, יוחזר איבר ריק כלשהו: )15 T dummy נקודות(. template <class T> class node { public: node(); node(const T &val); ~node(); 5

6 private: ; const T& _data; node *_next; template <class T> class mvector { public: mvector(); ~mvector(); mvector(const mvector &); void operator=(const mvector &); unsigned getsize(); void insertat(const T &, unsigned pos); const T & removeat(unsigned pos); private: unsigned _len; node<t> *_head; ; ב. יוסי, הסטודנט המצטיין ב SPL הציע לחסוך עוד זיכרון ולהוריד את השדה _len ובמקומו להשתמש ב.sizeof(_head) מה דעתך על הפתרון של יוסי? בחר את התשובה המתאימה ביותר )5 נקודות(:.template הפתרון מחזיר את גודל המערך, לכן עובד ונכון הפתרון כמעט נכון. יש לתקן ל: הפתרון מחזיר תמיד 4 במערכת של 32 ביט לא יתקמפל מכיוון שלא ניתן להשתמש ב אף תשובה לא נכונה sizeof(_head)/sizeof(t) sizeof() עם ג. ציירו את תמונת הזכרון )stack,heap,v-table( עבור הרצת קטע הקוד הבא עד ההערה )10 נקודות(: template <class T> void foo(mvector<t> vec){ mvector<t> my_vec = vec; //*****here***** void main(){ mvector<int> *vec = new mvector<int>; int val = 0; vec->insertat(val,5); foo(*vec); 6

7 30( שאלה 3 נקודות( צוות הפיתוח של חברת הזנק נחשבת החליט לעדכן את שרת ה Echo ע"פ תבנית הריאקטור שנלמדה בכיתה, כך שהתקשורת עם הלקוחות תבוסס על פרוטוקול,UDP במקום פרוטוקול TCP בקוד הקיים. DatagramSocketChannel הינה גרסה של ניתן לייצר הינה גרסה של המממשת גם DatagramSocket המממשת גם SelectableChannel )כפי ש SocketChannel.)SelectableChannel Socket DatagramSocketChannel port על נתון באופן הבא: int port = 7000; DatagramSocketChannel dgchannel = DatagramSocketChannel.open(); dgchannel.socket().bind(new InetSocketAddress(port));.receive,send בעזרת המתודות ByteBuffer תומך בשליחה וקבלה של DatagramSocketChannel אם ה DatagramSocketChannel מוגדר כ :non-blocking שליחה: או שכל ה packet נשלח מיד )כך שהערך המוחזר הוא מספר הבתים שנועדו לשליחה(, או שלא נשלח כלום )כך שהערך המוחזר הוא 0(. קבלה : או שכל ה packet מתקבל מיד, או שלא מתקבל כלום. מתודת ה receive מחזירה את כתובת השולח אם כל ה packet נקרא אל תוך ה,ByteBuffer או מחזירה null אם לא ניתן היה לקרוא את כל ה.packet להלן התיאור הרשמי של מתודות אלו: public int send(bytebuffer src, SocketAddress target) throws IOException Sends a datagram via this channel. Parameters: src - The buffer containing the datagram to be sent target - The address to which the datagram is to be sent Returns: The number of bytes sent, which will be either the number of bytes that were remaining in the source buffer when this method was invoked or, if this channel is non-blocking, may be zero if there was insufficient room for the datagram in the underlying output buffer public SocketAddress receive(bytebuffer dst) throws IOException Receives a datagram via this channel. Parameters: dst - The buffer into which the datagram is to be transferred Returns: The datagram's source address, or null if this channel is in non-blocking mode and no datagram was immediately available א. ממשו את ההצעה של צוות הפיתוח באמצעות,DatagramSocketChannel כאשר DatagramSocketChannel יחיד משמש לתקשורת עם כל הלקוחות. קוד הריאקטור המקורי מופיע בנספח. ניתן להוסיף מתודות ומחלקות. אין צורך לכתוב מתודות קיימות מחדש בגיליון התשובות ציינו את המקום במתודה בו אתם עורכים שינוי ואת השינוי )20 נקודות(. UDP במקום 2( TCP נקודות(. ב. ענו בקצרה על השאלות הבאות: I ציינו יתרון וחסרון עבור ההחלטה לעבור ל האם ניתן לעצב את ה Reactor המקורי עם SocketChannel יחיד לכל הלקוחות, כפי שנעשה עם DatagramSocketChannel במימוש שלכם בסעיף א'? נמקו )3 נקודות(. האם לדעתכם הגדרת )ביחס למימוש מסעיף א' בו יש רק DatagramSocketChannel נפרד לכל לקוח תייעל את התקשורת עם הלקוחות DatagramSocketChannel אחד(? נמקו )5 נקודות(. II III 7

8 10( שאלה 4 נקודות( חברת הסלולר BigApple נוהגת לאחסן נתונים על לקוחותיה ועל הפעולות שהם מבצעים במכשיר הנייד שלהם. עבור כל לקוח נשמרים נתוני שמו, מספר הטלפון שלו, תאריך הצטרפות, וכן קישורים לבני משפחתו, המנויים אף הם בחברת.BigApple כל פעולה הקשורה ללקוח נשמרת עם תאריך הביצוע שלה. קיימים סוגים שונים של פעולות: שליחת הודעה למספר מסויים, קבלת הודעה ממספר מסויים, התקשרות למספר מסויים, שיחה שלא נענתה ממספר מסויים. א. הגדירו מודל נתונים עבור המידע אותו שומרת חברת הסלולר. SQL המחזירה את ההודעות שנתקבלו עבור בני משפחתו הענפה של רינגו סטאר. ב. כתבו שאילתת 8

9 נספח: קוד ה,Reactor כפי שנלמד בכיתה ובתרגול public class Reactor<T> implements Runnable { private static final Logger logger = Logger.getLogger("edu.spl.reactor"); private final int _port; private final int _poolsize; private final ServerProtocolFactory<T> _protocolfactory; private final TokenizerFactory<T> _tokenizerfactory; private volatile boolean _shouldrun = true; private ReactorData<T> _data; public Reactor(int port, int poolsize, ServerProtocolFactory<T> protocol, TokenizerFactory<T> tokenizer) { _port = port; _poolsize = poolsize; _protocolfactory = protocol; _tokenizerfactory = tokenizer; private ServerSocketChannel createserversocket(int port) throws IOException { ServerSocketChannel sschannel = ServerSocketChannel.open(); sschannel.configureblocking(false); sschannel.socket().bind(new InetSocketAddress(port)); return sschannel; catch (IOException e) { logger.info("port " + port + " is busy"); throw e; public void run() { ExecutorService executor = Executors.newFixedThreadPool(_poolSize); Selector selector = null; ServerSocketChannel sschannel = null; selector = Selector.open(); sschannel = createserversocket(_port); catch (IOException e) { logger.info("cannot create the selector -- server socket is busy?"); return; 9

10 _data = new ReactorData<T>(executor, selector, _protocolfactory, _tokenizerfactory); ConnectionAcceptor<T> connectionacceptor = new ConnectionAcceptor<T>( sschannel, _data); sschannel.register(selector, SelectionKey.OP_ACCEPT, connectionacceptor); catch (ClosedChannelException e) { logger.info("server channel seems to be closed!"); return; while (_shouldrun && selector.isopen()) { selector.select(); catch (IOException e) { logger.info("trouble with selector: " + e.getmessage()); continue; Iterator<SelectionKey> it = selector.selectedkeys().iterator(); while (it.hasnext()) { SelectionKey selkey = (SelectionKey) it.next(); it.remove(); if (selkey.isvalid() && selkey.isacceptable()) { logger.info("accepting a connection"); ConnectionAcceptor<T> acceptor = (ConnectionAcceptor<T>) selkey.attachment(); acceptor.accept(); catch (IOException e) { logger.info("problem accepting a new connection: " + e.getmessage()); continue; if (selkey.isvalid() && selkey.isreadable()) { ConnectionHandler<T> handler = (ConnectionHandler<T>) selkey.attachment(); logger.info("channel is ready for reading"); handler.read(); if (selkey.isvalid() && selkey.iswritable()) { ConnectionHandler<T> handler = (ConnectionHandler<T>) selkey.attachment(); logger.info("channel is ready for writing"); handler.write(); 10

11 stopreactor(); public int getport() { return _port; public synchronized void stopreactor() { if (!_shouldrun) return; _shouldrun = false; _data.getselector().wakeup(); _data.getexecutor().shutdown(); _data.getexecutor().awaittermination(2000, TimeUnit.MILLISECONDS); catch (InterruptedException e) { e.printstacktrace(); public static void main(string args[]) { if (args.length!= 2) { System.err.println("Usage: java Reactor <port> <pool_size>"); System.exit(1); int port = Integer.parseInt(args[0]); int poolsize = Integer.parseInt(args[1]); Reactor<StringMessage> reactor = startechoserver(port, poolsize); Thread thread = new Thread(reactor); thread.start(); logger.info("reactor is ready on port " + reactor.getport()); thread.join(); catch (Exception e) { e.printstacktrace(); public static Reactor<StringMessage> startechoserver(int port, int poolsize){ ServerProtocolFactory<StringMessage> protocolmaker = new ServerProtocolFactory<StringMessage>() { public AsyncServerProtocol<StringMessage> create() { return new EchoProtocol(); ; 11

12 final Charset charset = Charset.forName("UTF-8"); TokenizerFactory<StringMessage> tokenizermaker = new TokenizerFactory<StringMessage>() { public MessageTokenizer<StringMessage> create() { return new FixedSeparatorMessageTokenizer("\n", charset); ; Reactor<StringMessage> reactor = new Reactor<StringMessage>(port, poolsize, protocolmaker, tokenizermaker); return reactor; Reactor<HttpMessage> reactor = new Reactor<HttpMessage>(port, poolsize, protocolmaker, tokenizermaker); return reactor; public class ConnectionAcceptor<T> { protected ServerSocketChannel _sschannel; protected ReactorData<T> _data; public ConnectionAcceptor(ServerSocketChannel sschannel, ReactorData<T> data) { _sschannel = sschannel; _data = data; public void accept() throws IOException { SocketChannel schannel = _sschannel.accept(); if (schannel!= null) { SocketAddress address = schannel.socket().getremotesocketaddress(); System.out.println("Accepting connection from " + address); schannel.configureblocking(false); SelectionKey key = schannel.register(_data.getselector(), 0); ConnectionHandler<T> handler = ConnectionHandler.create(sChannel, _data, key); handler.switchtoreadonlymode(); public class ConnectionHandler<T> { private static final int BUFFER_SIZE = 1024; 12

13 protected final SocketChannel _schannel; protected final ReactorData<T> _data; protected final AsyncServerProtocol<T> _protocol; protected final MessageTokenizer<T> _tokenizer; protected Vector<ByteBuffer> _outdata = new Vector<ByteBuffer>(); protected final SelectionKey _skey; private static final Logger logger = Logger.getLogger("edu.spl.reactor"); private ProtocolTask<T> _task = null; private ConnectionHandler(SocketChannel schannel, ReactorData<T> data, SelectionKey key) { _schannel = schannel; _data = data; _skey = key; _protocol = _data.getprotocolmaker().create(); _tokenizer = _data.gettokenizermaker().create(); private void initialize() { _skey.attach(this); _task = new ProtocolTask<T>(_protocol, _tokenizer, this); public static <T> ConnectionHandler<T> create(socketchannel schannel, ReactorData<T> data, SelectionKey key) { ConnectionHandler<T> h = new ConnectionHandler<T>(sChannel, data, key); h.initialize(); return h; public synchronized void addoutdata(bytebuffer buf) { _outdata.add(buf); switchtoreadwritemode(); private void closeconnection() { _skey.cancel(); _schannel.close(); catch (IOException ignored) { ignored = null; public void read() { if (_protocol.shouldclose()) return; SocketAddress address = _schannel.socket().getremotesocketaddress(); 13

14 logger.info("reading from " + address); ByteBuffer buf = ByteBuffer.allocate(BUFFER_SIZE); int numbytesread = 0; numbytesread = _schannel.read(buf); catch (IOException e) { numbytesread = -1; if (numbytesread == -1) { logger.info("client on " + address + " has disconnected"); closeconnection(); _protocol.connectionterminated(); return; buf.flip(); _task.addbytes(buf); _data.getexecutor().execute(_task); public synchronized void write() { if (_outdata.size() == 0) { switchtoreadonlymode(); return; ByteBuffer buf = _outdata.remove(0); if (buf.remaining()!= 0) { _schannel.write(buf); catch (IOException e) { e.printstacktrace(); if (buf.remaining()!= 0) { _outdata.add(0, buf); if (_protocol.shouldclose()) { switchtowriteonlymode(); if (buf.remaining() == 0) { closeconnection(); SocketAddress address = _schannel.socket().getremotesocketaddress(); logger.info("disconnecting client on " + address); 14

15 public void switchtoreadwritemode() { _skey.interestops(selectionkey.op_read SelectionKey.OP_WRITE); _data.getselector().wakeup(); public void switchtoreadonlymode() { _skey.interestops(selectionkey.op_read); _data.getselector().wakeup(); public void switchtowriteonlymode() { _skey.interestops(selectionkey.op_write); _data.getselector().wakeup(); public class ProtocolTask<T> implements Runnable { private final ServerProtocol<T> _protocol; private final MessageTokenizer<T> _tokenizer; private final ConnectionHandler<T> _handler; public ProtocolTask(final ServerProtocol<T> protocol, final MessageTokenizer<T> tokenizer, final ConnectionHandler<T> h) { this._protocol = protocol; this._tokenizer = tokenizer; this._handler = h; public synchronized void run() { while (_tokenizer.hasmessage()) { T msg = _tokenizer.nextmessage(); T response = this._protocol.processmessage(msg); if (response!= null) { ByteBuffer bytes = _tokenizer.getbytesformessage(response); this._handler.addoutdata(bytes); catch (CharacterCodingException e) { e.printstacktrace(); public void addbytes(bytebuffer b) { _tokenizer.addbytes(b); 15

16 class FixedSeparatorMessageTokenizer implements MessageTokenizer<StringMessage> { private final String _messageseparator; private final StringBuffer _stringbuf = new StringBuffer(); private final Vector<ByteBuffer> _buffers = new Vector<ByteBuffer>(); private final CharsetDecoder _decoder; private final CharsetEncoder _encoder; public FixedSeparatorMessageTokenizer(String separator, Charset charset) { this._messageseparator = separator; this._decoder = charset.newdecoder(); this._encoder = charset.newencoder(); public synchronized void addbytes(bytebuffer bytes) { _buffers.add(bytes); public synchronized boolean hasmessage() { while(_buffers.size() > 0) { ByteBuffer bytes = _buffers.remove(0); CharBuffer chars = CharBuffer.allocate(bytes.remaining()); this._decoder.decode(bytes, chars, false); chars.flip(); this._stringbuf.append(chars); return this._stringbuf.indexof(this._messageseparator) > -1; public synchronized StringMessage nextmessage() { String message = null; int messageend = this._stringbuf.indexof(this._messageseparator); if (messageend > -1) { message = this._stringbuf.substring(0, messageend); this._stringbuf.delete(0, messageend+this._messageseparator.length()); return new StringMessage(message); public ByteBuffer getbytesformessage(stringmessage msg) throws CharacterCodingException { StringBuilder sb = new StringBuilder(msg.getMessage()); sb.append(this._messageseparator); 16

17 ByteBuffer bb = this._encoder.encode(charbuffer.wrap(sb)); return bb; public class EchoProtocol implements AsyncServerProtocol<StringMessage> { private boolean _shouldclose = false; private boolean _connectionterminated = false; public StringMessage processmessage(stringmessage msg) { if (this._connectionterminated) { return null; if (this.isend(msg)) { this._shouldclose = true; return new StringMessage("Ok, bye bye"); return new StringMessage("Your message \"" + msg + "\" has been received"); public boolean isend(stringmessage msg) { return msg.equals("bye"); public boolean shouldclose() { return this._shouldclose; public void connectionterminated() { this._connectionterminated = true; 17

SPL - PS12. Reactor and Java New-IO (nio) classes

SPL - PS12. Reactor and Java New-IO (nio) classes SPL - PS12 Reactor and Java New-IO (nio) classes Multi-Threaded server, as seen in Tirgul 11 - one thread is in charge of accepting new connections - opens a new thread for each new client. - Thus, handling

More information

אוניברסיטת בן-גוריון מדור בחינות רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. בהצלחה! מספר נבחן:

אוניברסיטת בן-גוריון מדור בחינות רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. בהצלחה! מספר נבחן: אוניברסיטת בן-גוריון מדור בחינות מספר נבחן: רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. בהצלחה! תאריך הבחינה: 13.2.2012 שם המורה: פרופ' מיכאל אלחדד ד"ר מני אדלר ד"ר אנדרי שרף שם הקורס:

More information

אוניברסיטת בן-גוריון מדור בחינות רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. שימו לב: על תשובות ריקות יינתן 02% מהניקוד! בהצלחה!

אוניברסיטת בן-גוריון מדור בחינות רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. שימו לב: על תשובות ריקות יינתן 02% מהניקוד! בהצלחה! אוניברסיטת בן-גוריון מדור בחינות מספר נבחן: רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. שימו לב: על תשובות ריקות יינתן 02% מהניקוד! בהצלחה! תאריך הבחינה: 213...4 שם המורה: ד"ר אנדרי

More information

ד"ר אחיה אליסף מר בני לוטטי פרופ' אנדרי שרף הנדסת תוכנה

דר אחיה אליסף מר בני לוטטי פרופ' אנדרי שרף הנדסת תוכנה אוניברסיטת בן-גוריון מדור בחינות מספר נבחן: רשמו תשובותיכם בגיליון התשובות בלבד, תשובות מחוץ לגיליון לא יבדקו. שימו לב: על תשובות ריקות יינתן 20% מהניקוד! בהצלחה! תאריך הבחינה : 13.2.2017 שם המורה : ד"ר

More information

<exp> ::= <define> <cexp> <define> ::= ( define <var-decl> <cexp> ) / DefExp(var:VarDecl, val:cexp)

<exp> ::= <define> <cexp> <define> ::= ( define <var-decl> <cexp> ) / DefExp(var:VarDecl, val:cexp) הנחיות כלליות: תאריך הבוחן: 10.5.2018 שם המרצה: מני אדלר,מיכאל אלחדד, ירון גונן מבחן בקורס: עקרונות שפות תכנות מס' קורס: 202-1-2051 מיועד לתלמידי: מדעי המחשב והנדסת תוכנה שנה: ב' סמסטר: ב' משך הבוחן: 2

More information

מצליחה. 1. int fork-bomb() 2. { 3. fork(); 4. fork() && fork() fork(); 5. fork(); printf("bla\n"); 8. return 0; 9. }

מצליחה. 1. int fork-bomb() 2. { 3. fork(); 4. fork() && fork() fork(); 5. fork(); printf(bla\n); 8. return 0; 9. } שאלה : (4 נקודות) א. ב. ג. (5 נקודות) הגדירו את המונח race-condition במדוייק לא להשמיט פרטים. ספקו דוגמא. (5 נקודות) מהו? Monitor נא לספק הגדרה מלאה. ( נקודות) ( נקודות) ציינו כמה תהליכים יווצרו בקוד הבא

More information

אוניברסיטת בן-גוריון מדור בחינות רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. בהצלחה! מספר נבחן:

אוניברסיטת בן-גוריון מדור בחינות רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. בהצלחה! מספר נבחן: אוניברסיטת בן-גוריון מדור בחינות מספר נבחן: רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. בהצלחה! תאריך הבחינה: 5.3.0010 שם המורה: פרופ' מיכאל אלחדד ד"ר מני אדלר ד"ר אנדרי שרף שם הקורס:

More information

תוכנה 1 סמסטר א' תשע"א

תוכנה 1 סמסטר א' תשעא General Tips on Programming תוכנה 1 סמסטר א' תשע"א תרגול מס' 6 מנשקים, דיאגרמות וביטים * רובי בוים ומתי שמרת Write your code modularly top-down approach Compile + test functionality on the fly Start with

More information

- במפלס התחתון (בתחתית המדרגות) ובמפלס העליון (בראש המדרגות) יש מקום לכל הולכי הרגל

- במפלס התחתון (בתחתית המדרגות) ובמפלס העליון (בראש המדרגות) יש מקום לכל הולכי הרגל אוניברסיטת בן-גוריון מדור בחינות מספר נבחן: רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו. בהצלחה! תאריך הבחינה: 24.1.2011 שם המורה: פרופ' מיכאל אלחדד ד"ר מני אדלר ד"ר אנדרי שרף שם הקורס:

More information

גיליון תשובות מספר נבחן:

גיליון תשובות מספר נבחן: גיליון תשובות מספר נבחן: 03( שאלה 1 סעיף א )02 (i) //@PRE: checkinv(other.getx(),other.gety(),other.getradius()) //@POST: getradius() other.getradius() >= // Math.max(Math.abs(getY()-other.getY()),Math.abs(getX()-

More information

גיליון תשובות על תשובות ריקות יינתן 20% מהניקוד!

גיליון תשובות על תשובות ריקות יינתן 20% מהניקוד! גיליון תשובות על תשובות ריקות יינתן 20% מהניקוד! מספר נבחן: 30( שאלה 1 סעיף א )7 שני ת'רדים המפעילים את מתודת ה move על אחד משני גלגלים סמוכים מסוג SimpleGear הת'רד הראשון תופס את הגלגל הראשון this( שלו(,

More information

מבוא למדעי המחשב תרגול 8 רשימה משורשרת כללית, Comparator

מבוא למדעי המחשב תרגול 8 רשימה משורשרת כללית, Comparator מבוא למדעי המחשב 2017 תרגול 8 רשימה משורשרת כללית, Comparator בתרגול היום. LinkedList בניית ההכללה מ- LinkIntList תרגול המבנה ושימושיו ממשקים: Comparator Sorted Linked List ל- LinkedList ע"י שימוש ב- Comparator

More information

בשאלה זו נמשיך לעסוק במערכת לטיהור המים בה עסקנו במועד א'. המערכת מורכבת, כזכור, מהאובייקטים הפסיביים הבאים:.Pool. .Purifier בממשק מוגדרת המתודה

בשאלה זו נמשיך לעסוק במערכת לטיהור המים בה עסקנו במועד א'. המערכת מורכבת, כזכור, מהאובייקטים הפסיביים הבאים:.Pool. .Purifier בממשק מוגדרת המתודה אוניברסיטת בן-גוריון מדור בחינות מספר נבחן: רשמו תשובותיכם בגיליון התשובות בלבד תשובות מחוץ לגיליון לא יבדקו בהצלחה! תאריך הבחינה: 2222010 שם המורה: ד"ר מיכאל אלחדד ד"ר מני אדלר מר אוריאל ברגיג שם הקורס:

More information

מערכים שעור מס. 4 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

מערכים שעור מס. 4 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 מערכים שעור מס. 4 דרור טובי דר' כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 למה מערכים? ברצוננו לאחסן בתוכנית ציוני בחינה כדי לחשב את ממוצע הציונים וסטיית התקן. נניח ש 30 סטודנטים לקחו

More information

תוכנה 1 * לא בהכרח בסדר הזה

תוכנה 1 * לא בהכרח בסדר הזה תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות המימוש שלהן. )חתימות( ללא קוד אשר

More information

Algorithms. Intro2CS week 5

Algorithms. Intro2CS week 5 Algorithms Intro2CS week 5 1 Computational problems A computational problem specifies an inputoutput relationship What does the input look like? What should the output be for each input? Example: Input:

More information

גיליון תשובות מספר נבחן: סעיף ג (10 נקודות) הגדרת בטיחות הינה שמירה על האינווריאנטה של האובייקטים במהלך ההרצה.

גיליון תשובות מספר נבחן: סעיף ג (10 נקודות) הגדרת בטיחות הינה שמירה על האינווריאנטה של האובייקטים במהלך ההרצה. גיליון תשובות מספר נבחן: (30 נקודות) שאלה 1 סעיף א (15 נקודות) remove() המתודה remove() גם משנה את מצב האובייקט,(command) וגם מחזירה ערך.(query) על פי עקרונות העיצוב שלמדנו בכיתה יש להפריד שאילתות מפקודות.

More information

גיליון תשובות מספר נבחן:

גיליון תשובות מספר נבחן: גיליון תשובות מספר נבחן: 03( שאלה 1 סעיף א )11 - כפי שנלמד בהרצאות, התכונה נשמרת ותנאי התחלה וסיום מוגדרים על הממשק, ולא על מימוש ספציפי. ההגדרה צריכה להתבסס על שאילתות בסיס. במידה והשאילתות בממשק אינן

More information

אוניברסיטת בן-גוריון בהצלחה! מספר נבחן: מדור בחינות רשמו תשובותיכם בשאלון זה בלבד ובמקום המוקצה לכך בלבד! תשובות מחוץ לשאלון לא יבדקו.

אוניברסיטת בן-גוריון בהצלחה! מספר נבחן: מדור בחינות רשמו תשובותיכם בשאלון זה בלבד ובמקום המוקצה לכך בלבד! תשובות מחוץ לשאלון לא יבדקו. אוניברסיטת בןגוריון מדור בחינות מספר נבחן: רשמו תשובותיכם בשאלון זה בלבד ובמקום המוקצה לכך בלבד! תשובות מחוץ לשאלון לא יבדקו. תאריך הבחינה: 13.7.2008 שם המורה: ד"ר מיכאל אלחדד ניר צחר אוריאל ברגיג שם הקורס:

More information

הקלחמ ה תמרב ת ונ וכ ת (static members ) יליזרב דהוא Java תפשב ם דקת מ תונכת ביבא ל ת תטיסרבינוא

הקלחמ ה תמרב ת ונ וכ ת (static members ) יליזרב דהוא Java תפשב ם דקת מ תונכת ביבא ל ת תטיסרבינוא ת כו נו ת ברמת ה מחלקה (static members) אוהד ברזילי תכנות מ תקד ם בשפת Java אוניברסיטת ת ל אביב static keyword שדות המוגדרים כ static מציינים כי הם מוגדרים ברמת המחלקה ולא ברמת עצם כל העצמים של אותה מחלקה

More information

תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב Today Static vs. Dynamic binding Equals / hashcode String Immutability (maybe) 2 Static versus run-time

More information

תרגול 4 פונקציות. מבנה של פונקציה: public static <return value type> <function name> (<arg1 type> <arg1>, <arg2 type> <arg2>, ) { <function body> }

תרגול 4 פונקציות. מבנה של פונקציה: public static <return value type> <function name> (<arg1 type> <arg1>, <arg2 type> <arg2>, ) { <function body> } נושאי התרגול: מה הן פונקציות הגדרת פונקציה,קריאה לפונקציה העברת ארגומנטים,החזרת ערך או void העברת משתנים פרימיטיביים ומערכים לפונקציה העמסה של פונקציות תרגול 4 פונקציות מוטיבציה לעיתים,אנו נזקקים לבצע

More information

ב ה צ ל ח ה! אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק מיועד לתלמידי : א'

ב ה צ ל ח ה! אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כה תשרי תשעח 15/10/17 שמות המורים: ציון סיקסיק מיועד לתלמידי : א' אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : א' מועד קיץ סמ' שנה תשע"ז 3 שעות משך

More information

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes תוכנה 1 תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes class Outer { static class NestedButNotInner {... class Inner {... מחלקות מקוננות NESTED CLASSES 2 מחלקה מקוננת Class) )Nested

More information

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions מבוא לתיכנות עם MATLAB 234127 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 2013 Based on slides of Dr. Eran Eden, Weizmann 2008 1 >>g = [89 91 80 98]; >>p

More information

שאלה 1, סעיף ב )11 נק'(

שאלה 1, סעיף ב )11 נק'( שאלה 1, סעיף א )8 נק'( public static boolean lexlt(string s1, String s2) for (int i=0; i

More information

Practical Session - Heap

Practical Session - Heap Practical Session - Heap Heap Heap Maximum-Heap Minimum-Heap Heap-Array A binary heap can be considered as a complete binary tree, (the last level is full from the left to a certain point). For each node

More information

תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות

תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות מערכים Array: A fixed-length data structure for storing multiple values of the same type Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5

More information

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Array Creation and Initialization. Loop through Arrays

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Array Creation and Initialization. Loop through Arrays מערכים Array: A fixed-length data structure for storing multiple values of the same type תוכנה 1 Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 odds: 1 3 5 7 9 11 13 15 odds.length

More information

הנכות 1 םוכיס לוגרת 14 1

הנכות 1 םוכיס לוגרת 14 1 תוכנה 1 סיכום תרגול 14 1 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public abstract int foo1(int i); int foo2(int i); The modifiers

More information

תוכנה 1 3 תרגול מס' מערכים ומבני בקרה

תוכנה 1 3 תרגול מס' מערכים ומבני בקרה תוכנה 1 3 תרגול מס' מערכים ומבני בקרה מערכים Array: A fixed-length data structure for storing multiple values of the same type Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 odds:

More information

תזכורת: עץבינארי מבוא למדעי המחשב הרצאה 24: עצי חיפוש בינאריים

תזכורת: עץבינארי מבוא למדעי המחשב הרצאה 24: עצי חיפוש בינאריים מבוא למדעי המחשב הרצאה 2: עצי חיפוש בינאריים תזכורת: עץבינארי בנוסףלרשימהמקושרת ומערך, הצגנומבנהנתונים קונקרטיחדש עץבינארי עץבינארימורכבמ: שורש תת-עץשמאלי תת-עץימני A B C D E F G 2 תזכורת: שורש ותתי-עצים

More information

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Loop through Arrays. Array Creation and Initialization

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Loop through Arrays. Array Creation and Initialization מערכים תוכנה 1 Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 תרגול 2: מערכים

More information

מבוא למדעי המחשב תרגול 13: עצים בינאריים

מבוא למדעי המחשב תרגול 13: עצים בינאריים מבוא למדעי המחשב תרגול 13: עצים בינאריים עצים בינאריים - הגדרה הגדרה: עץ בינארי הוא עץ ריק (בלי צמתים) או עץ המורכב משורש ושני תתי-עצים, הוא עץ בינארי. ימני ושמאלי, שכל אחד מהם תרגיל 1 עץ בינארי מסודר

More information

סכום (סדרת ערכים) אחרת - דוגמא: סכום-ספרות (num) אם < 10 num החזר 1 או אם = 0 = num החזר 0 public static int numofdigits (int num)

סכום (סדרת ערכים) אחרת - דוגמא: סכום-ספרות (num) אם < 10 num החזר 1 או אם = 0 = num החזר 0 public static int numofdigits (int num) 1 תבנית צבירה תבניות אלגוריתמיות לפעולות רקורסיביות תבנית צבירה לסדרת ערכים: סכום (סדרת ערכים) החזר את ערך הקצה + סכום (סדרת הערכים ללא ערך הקצה) דוגמא: פעולה המחזירה את סכום הספרות שבמספר שלם לא שלילי

More information

גיליון תשובות מספר נבחן:

גיליון תשובות מספר נבחן: גיליון תשובות מספר נבחן: 30( שאלה 1 נקודות( א. ב. התכונה הנשמרת מתייחסת אך ורק למיקום המכוניות בצומת, כלומר למיקום המכוניות בשדה _cars הגישה לשדה זה מסונכרנת, אך מצד שני אין בדיקה של מיקום המכונית טרם

More information

כתבו קוד ב- 3 קבצי ה hpp (כתבו כהערה את שם הקובץ מעל) כך שהקוד יהיה תקין ובסגנון טוב. אין חובה

כתבו קוד ב- 3 קבצי ה hpp (כתבו כהערה את שם הקובץ מעל) כך שהקוד יהיה תקין ובסגנון טוב. אין חובה פקולטה: מדעי הטבע מחלקה: מדעי המחשב שם הקורס: מבנה זכרון ושפת ++C קוד הקורס: 7027810 תאריך בחינה: שאלות לדוגמא משך הבחינה: שעתיים שם המרצים: ד"ר אופיר פלא, ד"ר מירי בן ניסן חומר עזר: פתוח שימוש במחשבון:

More information

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions מבוא לתיכנות עם MATLAB 23427 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 203 Based on slides of Dr. Eran Eden, Weizmann 2008 ביטויים לוגיים דוגמא: תקינות

More information

שאלה 1 מהו הפלט של התוכנית הבאה:

שאלה 1 מהו הפלט של התוכנית הבאה: תרגול חזרה שאלה 1 מהו הפלט של התוכנית הבאה: public sttic int wht(int n) { int i; int sum=0; if(n == 0) return 1; for (i=0; i

More information

הנכות 1 תואיגש םע תודדומתהו תואלול,םי : כרעמ 2 לוגרת

הנכות 1 תואיגש םע תודדומתהו תואלול,םי : כרעמ 2 לוגרת תוכנה 1 תרגול 2: מערכים, לולאות והתמודדות עם שגיאות מערכים מערכים Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices

More information

Practical Session No. 14 Topological sort,amortized Analysis

Practical Session No. 14 Topological sort,amortized Analysis Practical Session No. 14 Topological sort,amortized Analysis Topological- Sort Topological sort Ordering of vertices in a directed acyclic graph (DAG) G=(V,E) such that if there is a path from v to u in

More information

מבוא לתכנות ב- JAVA תרגול 7

מבוא לתכנות ב- JAVA תרגול 7 מבוא לתכנות ב- JAVA תרגול 7 רקורסיה - הקדמה הגדרה רקורסיבית: חדר הוא מסודר אם צד שמאל שלו מסודר שלו מסודר. וצד ימין שיטת פתרון רקורסיבית: פתרון מופעים פשוטים יותר של בעיה בכדי לפתור את הבעיה המקורית רקורסיה

More information

3 Dynamic Routing A (RIP and OSPF)

3 Dynamic Routing A (RIP and OSPF) אוניברסיטת בן גוריון בנגב המחלקה להנדסת מערכות תקשורת רשתות תקשורת מחשבים - 2 קורס 37110211 מעבדה בתקשורת מחשבים 3 Dynamic Routing A (RIP and OSPF) בשבוע (29/11/2011) 5 בשבוע (13/12/2011) 7 מעבדה מספר

More information

הנכות 1 םוכיס לוגרת 13 1

הנכות 1 םוכיס לוגרת 13 1 תוכנה 1 סיכום תרגול 13 1 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public abstract int foo1(int i); int foo2(int i); The modifiers

More information

רזח יליגרתו םי יראני ב ם

רזח יליגרתו םי יראני ב ם מבוא למדעי המחשב עצים בינאריים ותרגילי חזרה תרגול 13: עצים בינאריים - הגדרה הגדרה: עץ בינארי הוא עץ ריק )בלי צמתים( או עץ המורכב משורש ושני תתי-עצים, הוא עץ בינארי. ימני ושמאלי, שכל אחד מהם שאלה עץ בינארי

More information

תור שימושים בעולם התוכנה

תור שימושים בעולם התוכנה מבוא למדעי המחשב הרצאה : Queue, Iterator & Iterable תור מבנה נתונים אבסטרקטי תור שימושים בעולם התוכנה השימושים של תורים בעולם התוכנה מזכירים מאוד תורים במציאות: )VoIP( )YouTube( מקלדת שידור סרט באינטרנט

More information

הנכות 1 תואיגש םע תודדומתהו תואלול,םיכרעמ : לו 2 גרת

הנכות 1 תואיגש םע תודדומתהו תואלול,םיכרעמ : לו 2 גרת תוכנה 1 תרגול 2: מערכים, לולאות והתמודדות עם שגיאות מערכים Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices (start

More information

תוכנה 1 תרגול 2: מערכים ומבני בקרה

תוכנה 1 תרגול 2: מערכים ומבני בקרה תוכנה 1 תרגול 2: מערכים ומבני בקרה 2 Useful Eclipse Shortcuts Ctrl+1 quick fix for errors, or small refactoring suggestions Ctrl+SPACE code content assist (auto-completion) Auto completion for main create

More information

שים לב! אין לכתוב בשוליים. השוליים יחתכו לצורך סריקת המבחן.

שים לב! אין לכתוב בשוליים. השוליים יחתכו לצורך סריקת המבחן. מספר : 804042 שם המרצה: תאריך הבחינה: ד"ר גדעון גרדוול, ד"ר אריאלה ריכרדסון 13/02/2013 משך הבחינה )בדקות(: 150 חומר עזר מותר לשימוש: ללא חומר עזר מחשבון: ללא מחשבון מס' תלמיד: מכון: לב/נוה, טל, טל-דעת,

More information

מבוא לתכנות בשפת C. Tzachi (Isaac) Rosen

מבוא לתכנות בשפת C. Tzachi (Isaac) Rosen מבוא לתכנות בשפת C מצביעים והקצאה דינאמית כתובות של משתנים לכל משתנה כתובת של המקום שלו בזיכרון כבר ראינו: שם של מערך הוא למעשה הכתובת של התא הראשון )באינדקס 0( של המערך להזכירכם: תא של מערך הינו משתנה

More information

Page 1 1 מס' מחברת : מס' ת.ז. : סמסטר א' תשס"ט מועד: א' 16/02/2009 משך הבחינה: שלוש שעות אין להשתמש בחומר עזר בחינה בקורס תכנות ב- C מרצים: אלון לרנר, עופר פסטרנק מתרגלים:

More information

דף הדרכה ליצירת שרת/ לקוח עם GUI

דף הדרכה ליצירת שרת/ לקוח עם GUI דף הדרכה ליצירת שרת/ לקוח עם GUI בשיעורים הקודמים למדנו כיצד ליצור שרת לקוח פשוט, ויצירת טופס המכיל פקדים כלומר יצירת GUI למשתמש, בשיעור זה נרצה להראות את הדרך לשילוב בין השניים כלומר ליצור לקוח client

More information

פתרון מוצע לבחינת מה"ט ב_שפת c מועד אביב תשע"ח, פברואר 8102 מחבר: מר שייקה בילו, מכללת אורט רחובות

פתרון מוצע לבחינת מהט ב_שפת c מועד אביב תשעח, פברואר 8102 מחבר: מר שייקה בילו, מכללת אורט רחובות פתרון מוצע לבחינת מה"ט ב_שפת c מועד אביב תשע"ח, פברואר 8102 מחבר: מר שייקה בילו, מכללת אורט רחובות שאלה מספר 1 התוכנית מגדירה חמישה משתנים שלמים: השלושה הראשונים הם שלושה מצביעים - *s *t,i. j ושלושה נוספים

More information

תוכנה 1 * לא בהכרח בסדר הזה

תוכנה 1 * לא בהכרח בסדר הזה תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים - תזכורת מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות )חתימות(. מימוש דיפולטיבי

More information

מבוא לתכנות מערכות מבחן מועד א' סמסטר חורף

מבוא לתכנות מערכות מבחן מועד א' סמסטר חורף הפקולטה למדעי המחשב פרופ' גיל ברקת נועם שגב, שרי דואק, רן ברואר, דור כהן הטכניון מכון טכנולוגי לישראל 70.70.07.4 מבוא לתכנות מערכות 024.00 מבחן מועד א' סמסטר חורף 07.207.4 הוראות כלליות משך המבחן: 081

More information

ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים. .vector. list iterator נכיר תחילה את האוסף הפשוט ביותר בספריה

ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים. .vector. list iterator נכיר תחילה את האוסף הפשוט ביותר בספריה ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים vector list iterator 2 קיימת בכל מימוש של ++C מכילה אוספים (Containers) ואלגוריתמים נכיר תחילה את האוסף הפשוט ביותר בספריה.vector מערך

More information

Computer Programming A תרגול 9

Computer Programming A תרגול 9 Computer Programming A תרגול 9 1 מטרת התרגול הקצאת זיכרון מבנים רשימות דינאמית ניהול הזיכרון בתוכנית עד כה כל המשתנים שראינו היו לוקאליים. משך הקיום של משתנים מקומיים הוא הזמן אשר הפונקציה בה הם נמצאים

More information

תכנות מונחה עצמים משחקים תשע"ו

תכנות מונחה עצמים משחקים תשעו move semantics 1 תכנות מונחה עצמים ופיתוח משחקים תשע"ו סמנטיקת ההעברה semantics( )Move move semantics 2 מטרה האצה של התוכניות, שיפור בביצועים על ידי חסכון בבנייה והעתקה של אובייקטים זמניים move semantics

More information

גיליון תשובות מספר נבחן:

גיליון תשובות מספר נבחן: גיליון תשובות מספר נבחן: 30) שאלה 1 ראשית, מספר הערות על מאפייני משחק הקלפים (מטאפורה ש חוּ קה על החיים, הקורס, והמבחן) אשר פורטו בשאלה זו: משחק מרתק המשלב הנאה. ראו מקרה הרב יהודה-אריה מודנה, מגדולי המלומדים

More information

תרגול 6 רקורסיה ותכנות מונחה עצמים

תרגול 6 רקורסיה ותכנות מונחה עצמים מבוא למדעי המחשב 2017 תרגול 6 רקורסיה ותכנות מונחה עצמים מבוא למדעי המחשב 1 ראינו בהרצאה רקורסיה תכנות מונחה עצמים: מחלקה ואובייקט שדות, בנאים ושיטות מימוש מערך דינאמי של ראשוניים בתרגול היום רקורסיה הדפסת

More information

נתונות שתי המחלקות הבאות:

נתונות שתי המחלקות הבאות: ממבחנים שאלות מבנה הנתונים תור (queue) הוא מבנה הדומה למחסנית (stack) שנלמדה בקורס. לתור ניתן להוסיף איברים (ע"י פעולה הנקראת (enqueue וניתן להסיר את האיבר שבראש התור,(dequeue) כלומר האיבר הוותיק ביותר

More information

עמוד 1 (תאריך ( âùéä ער äìàù בכל השאלות ניתן להניח שהקלט תקין. 100 íåëñ חורף :

עמוד 1 (תאריך ( âùéä ער äìàù בכל השאלות ניתן להניח שהקלט תקין. 100 íåëñ חורף : עמוד 1 מבוא למדעי המחשב מ' 234114 מבוא למדעי המחשב ח' 234117 מבחן מועד א', סמסטר חורף תשס"ב (תאריך ( 29.1.03 שם משפחה שם פרטי מס' סטודנט âùéä ער äìàù 15 1 15 2 16 3 18 4 16 5 20 6 100 íåëñ חומר עזר: אין

More information

תוכנה 1 תרגול מספר 10: תרגיל חזרה חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1 תרגול מספר 10: תרגיל חזרה חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב 1 תוכנה 1 תרגול מספר 10: תרגיל חזרה חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 חברת הייטק בתרגיל זה נתרגל מספר נושאים אותם למדנו בשיעורים האחרונים: עיצוב ובניית מודל המורכב ממחלקות לתיאור סביבה

More information

Communication Networks ( ) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University. Allon Wagner

Communication Networks ( ) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University. Allon Wagner Communication Networks (0368-3030) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University Allon Wagner Kurose & Ross, Chapter 3.5.5, 3.7 (5 th ed.) Many slides adapted from: J. Kurose

More information

ת ונכת סרוק תורשוקמ תומישר :יעישת רועיש 1

ת ונכת סרוק תורשוקמ תומישר :יעישת רועיש 1 קורס תכנות שיעור תשיעי: רשימות מקושרות 1 הקצאה דינאמית של מערכים דו-ממדיים )לפחות( שלוש גישות אפשריות:.1 מערך של מערכים מצביעים לתוך מערך "גדול".2 3. מצביע יחיד למערך גדול 2 The Interface 3 (Simple) Usage

More information

תוכנה 1 תרגול מספר 13

תוכנה 1 תרגול מספר 13 1 תוכנה 1 תרגול מספר 13 ו- HashCode Equals עוד על טיפוסים מוכללים )Advanced Generics( חריגים )Exceptions( בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 ו- HASHCODE EQUALS 3 תזכורת: המחלקה Object package

More information

תוכנה 1 תרגול מספר 13

תוכנה 1 תרגול מספר 13 1 2 תוכנה 1 תרגול מספר 13 ו- HashCode Equals עוד על טיפוסים מוכללים )Advanced Generics( ו- HASHCODE EQUALS חריגים )Exceptions( בית הספר למדעי המחשב אוניברסיטת תל אביב 1 3 4 package java.lang; תזכורת: המחלקה

More information

הנכות 1 םוכיס לוגרת 13 1

הנכות 1 םוכיס לוגרת 13 1 תוכנה 1 סיכום תרגול 13 1 בחינה באופק! הבחינה תכלול את כל הנושאים שכיסינו במהלך הסמסטר: כל ההרצאות כל תרגולים כל תרגילי בית חומר סגור שאלות אמריקאיות 2 קצת על מנשקים מנשק יכול להרחיב שירותים במנשק הם תמיד

More information

ASP.Net Web API.

ASP.Net Web API. ASP.Net Web API 1 מה זה? Web API View בלבד ולא Data אותו מממש השרת והוא מחזיר לקליינט API הוא Web API הבקשה והתשובה הן בפרוטוקול Http\Https הקליינטים של Web API יכולים להיות רבים : אפשר להשתמש גם בMVC

More information

Introduction to NIO: New I/O

Introduction to NIO: New I/O Chapter 2 Introduction to NIO: New I/O Advanced Topics in Java Khalid Azim Mughal khalid@ii.uib.no http://www.ii.uib.no/~khalid/atij/ Version date: 2004-09-01 ATIJ 2: Introduction to NIO: New I/O 2-1/36

More information

Amortized Analysis, Union-Find,

Amortized Analysis, Union-Find, Practical Session No. 13 Amortized Analysis, Union-Find, AMORTIZED ANALYSIS Refers to finding the average running time per operation, over a worst-case sequence of operations. Amortized analysis differs

More information

Simple Web Service. namespace MyService { public class Service1 : System.Web.Services.WebService {

Simple Web Service. namespace MyService { public class Service1 : System.Web.Services.WebService { Simple Web Service WS פתיחת פרוייקט File New Project ASP.Net web service project - >http://localhost/webservice1 יצירת שירות המחשב חיבור וחילוק 2 מספרים : הטיפוסים הבסיסיים using System; איסוף וניהוף אוספי

More information

הערה על הפתרון: בתנאי הקדם אין לבדוק שהמשחק לא השתנה. המתודה מוגדרת היטב ויש לה ערך החזרה למקרה זה.

הערה על הפתרון: בתנאי הקדם אין לבדוק שהמשחק לא השתנה. המתודה מוגדרת היטב ויש לה ערך החזרה למקרה זה. אוניברסיטת בן-גוריון מדור בחינות מספר נבחן: רשמו תשובותיכם בגיליון התשובות בלבד, תשובות מחוץ לגיליון לא יבדקו. שימו לב: על תשובות ריקות יינתן 20% מהניקוד. בהצלחה! תאריך הבחינה : 6.3.2017 שם המורה : ד"ר

More information

Graph Database, think different!

Graph Database, think different! Graph Database, think different! Written by Roni Licher Winter 2014-2015 236363 - Database Systems - Technion Nodes Edges (directed or not) Properties Neo4j and Cypher 4j Graph database (Like SQL server

More information

Programming in C תרגול 8

Programming in C תרגול 8 Programming in C תרגול 8 1 1 נושאים מצביעים רקע אופרטורים על מצביעים מצביעים כפרמטרים לפונקציה הקצאת זיכרון דינאמית Malloc free מצביעים תאור הזיכרון של המחשב: ניתן לחשוב על זיכרון המחשב כעל רצף של תאים,

More information

מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א. I x > a. פתרון 2: משפט switch

מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א. I x > a. פתרון 2: משפט switch 1 מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות שאלה פרק א :1 m a b k k b x I x > a II x < b פלט I && II 0 8 12 8 4 1 9 11 2 10 11 9 8 2 12 35 13 העמודות המסומנות בכחול אינן עמודות חובה בפתרון. שאלה 2:

More information

במידה ולסעיף ניתנה תשובה ובנוסף נרשם לגבי הסעיף לא יודע/ת אזי הניקוד שיינתן

במידה ולסעיף ניתנה תשובה ובנוסף נרשם לגבי הסעיף לא יודע/ת אזי הניקוד שיינתן פקולטה: מדעי הטבע מחלקה: מדעי המחשב שם הקורס: מבוא למחשבים ושפת C קוד הקורס: 2-7028510 תאריך בחינה: שאלות חזרה למבחן. חשוב: אין להסיק ששאלות אחרות לא יכולות להישאל במבחן, אין להסיק כי נושאים מסויימים בסיליבוס

More information

מבוא לתכנות ב- JAVA מעבדה 4

מבוא לתכנות ב- JAVA מעבדה 4 מבוא לתכנות ב- JAVA מעבדה 4 מה בתרגול מערכים מחרוזות מערך חד מימדי מערך הוא מבנה המחזיק סדרה של איברים מאותו טיפוס גודל המערך הוא קבוע )נקבע בעת יצירת המערך( הגישה לכל איבר היא באמצעות אינדקס למה לי מערך?

More information

משתנים שעור מס. 2 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

משתנים שעור מס. 2 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 משתנים שעור מס. 2 דרור טובי דר' כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 תפקיד המשתנים הצהרה על משתנה השמת ערך במשתנה int a, b, c; a = 1234; b = 99; c = a + b; משתנים מאפשרים לנו לשמור

More information

מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development(

מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development( מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development( תוכנה 1 תרגול 8 String Immutability Strings are constants String s = " Tea "; s = s.trim(); s = s.replace('t', 'S'); s 1 2 3 " Tea " "Tea" "Sea"

More information

Introduction to Programming in C תרגול 8

Introduction to Programming in C תרגול 8 Introduction to Programming in C תרגול 8 1 1 נושאים מצביעים רקע אופרטורים על מצביעים מצביעים כפרמטרים לפונקציה הקצאה דינמית מבנים תאור הזיכרון של המחשב: מצביעים ניתן לחשוב על זיכרון המחשב כעל רצף של תאים,

More information

מבני נתונים תכנות מונחה עצמים מבני נתונים. מחלקות אבסטרקטיות חבילות packages סיכום הרשאות גישה wrappers ADT מערך דינמי מחסנית

מבני נתונים תכנות מונחה עצמים מבני נתונים. מחלקות אבסטרקטיות חבילות packages סיכום הרשאות גישה wrappers ADT מערך דינמי מחסנית מבני נתונים 1 תכנות מונחה עצמים מחלקות אבסטרקטיות חבילות packages סיכום הרשאות גישה wrappers מבני נתונים ADT מערך דינמי מחסנית 2 1 מבני נתונים תור - Queue Iterators רשימות מקושרות "רגילות" 3 מבנה נתונים

More information

הנכות 1 םוכיס לוגרת 13 1

הנכות 1 םוכיס לוגרת 13 1 תוכנה 1 סיכום תרגול 13 1 בחינה באופק! הבחינה תכלול את כל הנושאים שכיסינו במהלך הסמסטר: כל ההרצאות כל תרגולים כל תרגילי בית חומר סגור שאלות אמריקאיות 2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים

More information

מבוא לתכנות ב- JAVA תרגול 5. Ipc161- practical session 5

מבוא לתכנות ב- JAVA תרגול 5. Ipc161- practical session 5 מבוא לתכנות ב- JAVA תרגול 5 Ipc161- practical session 5 מה בתרגול מערכים דו ממדיים )methods( פונקציות/שיטות ב- Java הגדרת פונקציה קריאה/הפעלה העברת ארגומנטים ערכי החזרה מערך דו ממדי מערך של מערכים חד ממדיים

More information

מבוא למדעי המחשב תירגול 2: מבוא למדעי המחשב מ' - תירגול 2

מבוא למדעי המחשב תירגול 2: מבוא למדעי המחשב מ' - תירגול 2 מבוא למדעי המחשב תירגול 2: לולאות, קלט, וטיפוסים 1 תוכנייה לולאת while קלט טיפוסי משתנים המרת טיפוסים טיפוס char 2 לולאת while 3 לולאת while קטע קוד מתבצע שוב ושוב כל עוד תנאי מתקיים int number = 40; while(number>0)

More information

תרגול 12. Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים

תרגול 12. Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים תרגול 12 Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים ספרית התבניות הסטנדרטית קיימת בכל מימוש של ++C מכילה אוספים (Containers) ואלגוריתמים. משתמשת בתבניות :(templates) אוספי הנתונים

More information

רשימות דילוגים Skip Lists

רשימות דילוגים Skip Lists Lecture6 of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds רשימות דילוגים Skip Lists Skip lists: A probabilistic Alternative to Balanced Trees, William Pugh, Communications of the

More information

Operating Systems. Practical Session 4 Threads

Operating Systems. Practical Session 4 Threads Operating Systems Practical Session 4 Threads 1 Threads Executed within a process. Allow multiple independent executions under the same process (container). Possible states: running, ready, blocked, terminated.

More information

Tutorial 10. Introduction to C++ שימו

Tutorial 10. Introduction to C++ שימו Introduction to ++ שימו תרגול זה אינו התרגול הרישמי של הקורס. הוא מבוסס על חוברת התרגולים אך מכיל שינויים, הסברים נוספים ודוגמאות שונות או נוספות. + + תוכנ ית רא שונה ב הכרו ת עם + + תרגול // First ++

More information

היצביט ומ - ןוכית ת וי נבת

היצביט ומ - ןוכית ת וי נבת תבני ו ת תיכון Patterns) (Design תבנ יו ת תיכון - מו טיבציה בחיי היום יום אנחנו מתארים דברים תוך שימוש בתבניות חוזרות: "מכונית א' היא כמו מכונית ב', אבל יש לה 2 דלתות במקום 4" "אני רוצה ארון כמו זה, אבל

More information

תוכנה 1 * לא בהכרח בסדר הזה

תוכנה 1 * לא בהכרח בסדר הזה תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות המימוש שלהן. )חתימות( ללא קוד אשר

More information

מבוא למדעי המחשב תירגול 3:

מבוא למדעי המחשב תירגול 3: מבוא למדעי המחשב תירגול 3: לולאות, קלט, וטיפוסים תוכנייה לולאת while קלט טיפוסי משתנים המרת טיפוסים טיפוס char מבוא למדעי המחשב מ' - תירגול 3 2 לולאת while מבוא למדעי המחשב מ' - תירגול 3 3 לולאת while

More information

Exams questions examples

Exams questions examples Exams questions examples 1 Exam example 1. y - x what נק' ( לפניך הפעולה הרקורסיבית מקבלת כפרמטרים שני מספרים שלמים ו 10 )? מה יהיה הפלט כתוצאה מזימון הפעולה what public static int what(int x, int y) if(x

More information

תרגילים ופתרונות בשפת - C הסתעפויות

תרגילים ופתרונות בשפת - C הסתעפויות תרגילים ופתרונות בשפת - C הסתעפויות כתב וערך: שייקה בילו תרגיל - 1 כתוב תוכנית שתקבל מהמשתמש שלושה מספרים, ותציג את הגדול מביניהם על המסך. #include void main() int mis1, mis2, mis3, max; printf("please

More information

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions מבוא לתיכנות עם MATLAB 234127 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 2013 Based on slides of Dr. Eran Eden, Weizmann 2008 1 motivation Proper academic

More information

תוכנה 1 תרגול מספר 10: תרגיל חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1 תרגול מספר 10: תרגיל חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב 1 תוכנה 1 תרגול מספר 10: תרגיל חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 חברת הייטק בתרגיל זה נתרגל מספר נושאים אותם למדנו בשיעורים האחרונים: עיצוב ובניית מודל המורכב ממחלקות לתיאור סביבה

More information

תרשים המחלקות ותרשים העצמים

תרשים המחלקות ותרשים העצמים 1 תרשים המחלקות ותרשים העצמים חלק שלישי: ניתוח ועיצוב מערכות מידע באמצעות שימוש ב- UML ומתודולוגיית ה- Process )UP( Unified E1 3 E2 2 Outline UML Introduction Class Diagram Class Association Self association

More information

קורס תכנות כתובות בזיכרון כתובות בזכרון מצביעים וכתובות מצביעים וכתובות שיעור שביעי: מבנים, הקצאת זיכרון דינאמית האופרטור &

קורס תכנות כתובות בזיכרון כתובות בזכרון מצביעים וכתובות מצביעים וכתובות שיעור שביעי: מבנים, הקצאת זיכרון דינאמית האופרטור & כתובות בזיכרון קורס תכנות int x = 10; char c = a ; 10 784658 'a' 26537 שם x כתובת 784658 שיעור שביעי: מבנים, הקצאת זיכרון דינאמית 26537 c 1 הגדרת מצביע variable( )pointer כתובות בזכרון האופרטור & מחזיר

More information

שיעור מספר 3: "מחלקות וטיפוסים"

שיעור מספר 3: מחלקות וטיפוסים שיעור מספר 3: "מחלקות וטיפוסים" בית הספר למדעי המחשב על סדר היום מודל הזיכרון של Java Heap and Stack העברת ארגומנטים מנגנוני שפת Java עצמים ושירותי מופע 2 העברת ארגומנטים כאשר מתבצעת קריאה לשרות, ערכי

More information